CORE = [
    '//utils/osgi:onlab-osgi',
    '//utils/junit:onlab-junit',
    '//utils/misc:onlab-misc',
    '//utils/rest:onlab-rest',

    '//core/api:onos-api',
    '//core/net:onos-core-net',
    '//core/common:onos-core-common',
    '//core/store/primitives:onos-core-primitives',
    '//core/store/serializers:onos-core-serializers',
    '//core/store/dist:onos-core-dist',
    '//core/security:onos-security',
    '//core/store/persistence:onos-core-persistence',

    '//incubator/api:onos-incubator-api',
    '//incubator/net:onos-incubator-net',
    '//incubator/core:onos-incubator-core',
    '//incubator/store:onos-incubator-store',
    '//incubator/rpc:onos-incubator-rpc',

    '//cli:onos-cli',

    '//protocols/rest/api:onos-protocols-rest-api',
    '//protocols/rest/ctl:onos-protocols-rest-ctl',
    '//protocols/bgp/bgpio:onos-protocols-bgp-bgpio',
    '//protocols/bgp/api:onos-protocols-bgp-api',
    '//protocols/bgp/ctl:onos-protocols-bgp-ctl',
    '//protocols/netconf/api:onos-protocols-netconf-api',
    '//protocols/netconf/ctl:onos-protocols-netconf-ctl',
    '//protocols/openflow/api:onos-protocols-openflow-api',
    '//protocols/openflow/ctl:onos-protocols-openflow-ctl',
    '//protocols/ospf/api:onos-protocols-ospf-api',
    '//protocols/ospf/protocol:onos-protocols-ospf-protocol',
    '//protocols/ospf/ctl:onos-protocols-ospf-ctl',
    '//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc',
    '//protocols/ovsdb/api:onos-protocols-ovsdb-api',
    '//protocols/ovsdb/ctl:onos-protocols-ovsdb-ctl',
    '//protocols/pcep/pcepio:onos-protocols-pcep-pcepio',
    '//protocols/pcep/api:onos-protocols-pcep-api',
    '//protocols/pcep/ctl:onos-protocols-pcep-ctl',
    '//protocols/snmp/api:onos-protocols-snmp-api',
    '//protocols/snmp/ctl:onos-protocols-snmp-ctl',
    '//protocols/isis/api:onos-protocols-isis-api',
    '//protocols/isis/ctl:onos-protocols-isis-ctl',
    '//protocols/isis/isisio:onos-protocols-isis-isisio',

    '//drivers/utilities:onos-drivers-utilities',
    '//drivers/bti:onos-drivers-bti-oar',
    '//drivers/ciena:onos-drivers-ciena-oar',
    '//drivers/cisco:onos-drivers-cisco-oar',
    '//drivers/default:onos-drivers-default-oar',
    '//drivers/fujitsu:onos-drivers-fujitsu-oar',
    '//drivers/lumentum:onos-drivers-lumentum-oar',
    '//drivers/netconf:onos-drivers-netconf-oar',
    '//drivers/ovsdb:onos-drivers-ovsdb-oar',
    '//drivers/optical:onos-drivers-optical-oar',

    '//providers/netconf/device:onos-providers-netconf-device',
    '//providers/openflow/device:onos-providers-openflow-device',
    '//providers/openflow/packet:onos-providers-openflow-packet',
    '//providers/openflow/flow:onos-providers-openflow-flow',
    '//providers/openflow/group:onos-providers-openflow-group',
    '//providers/openflow/meter:onos-providers-openflow-meter',
    '//providers/ovsdb/device:onos-providers-ovsdb-device',
    '//providers/ovsdb/tunnel:onos-providers-ovsdb-tunnel',
    '//providers/rest/device:onos-providers-rest-device',
    '//providers/snmp/device:onos-providers-snmp-device',
    '//providers/isis/cfg:onos-providers-isis-cfg',
    '//providers/isis/device:onos-providers-isis-device',

    '//web/api:onos-rest',
    '//web/gui:onos-gui',
]

APPS = [
    # Drivers
    '//drivers/default:onos-drivers-default-oar',
    '//drivers/corsa:onos-drivers-corsa-oar',

    # Providers
    '//providers/bgp:onos-providers-bgp-oar',
    '//providers/host:onos-providers-host-oar',
    '//providers/lldp:onos-providers-lldp-oar',
    '//providers/netcfghost:onos-providers-netcfghost-oar',
    '//providers/netcfglinks:onos-providers-netcfglinks-oar',
    '//providers/netconf:onos-providers-netconf-oar',
    '//providers/openflow/message:onos-providers-openflow-message-oar',
    '//providers/ovsdb:onos-providers-ovsdb-oar',
    '//providers/ovsdb/host:onos-providers-ovsdb-host-oar',
    '//providers/ovsdb/base:onos-providers-ovsdb-base-oar',
    '//providers/pcep:onos-providers-pcep-oar',
    '//providers/null:onos-providers-null-oar',
    '//providers/openflow/base:onos-providers-openflow-base-oar',
    '//providers/openflow/app:onos-providers-openflow-app-oar',
    '//providers/rest:onos-providers-rest-oar',
    '//providers/isis:onos-providers-isis-oar',

    # Apps
    '//apps/dhcp:onos-apps-dhcp-oar',
    '//apps/fwd:onos-apps-fwd-oar',
    '//apps/acl:onos-apps-acl-oar',
    '//apps/bgprouter:onos-apps-bgprouter-oar',
    '//apps/cip:onos-apps-cip-oar',
    '//apps/drivermatrix:onos-apps-drivermatrix-oar',
    '//apps/events:onos-apps-events-oar',
    '//apps/proxyarp:onos-apps-proxyarp-oar',
    '//apps/segmentrouting:onos-apps-segmentrouting-oar',
    '//apps/gangliametrics:onos-apps-gangliametrics-oar',
    '//apps/graphitemetrics:onos-apps-graphitemetrics-oar',
    '//apps/flowanalyzer:onos-apps-flowanalyzer-oar',
    '//apps/influxdbmetrics:onos-apps-influxdbmetrics-oar',
    '//apps/metrics:onos-apps-metrics-oar',
    '//apps/mfwd:onos-apps-mfwd-oar',
    '//apps/mlb:onos-apps-mlb-oar',
    '//apps/openstackinterface:onos-apps-openstackinterface-oar',
    '//apps/openstacknetworking:onos-apps-openstacknetworking-oar',
    '//apps/openstacknetworking/openstackrouting:onos-apps-openstacknetworking-openstackrouting-oar',
    '//apps/openstacknetworking/openstackswitching:onos-apps-openstacknetworking-openstackswitching-oar',
    '//apps/mobility:onos-apps-mobility-oar',
    '//apps/optical:onos-apps-optical-oar',
    '//apps/newoptical:onos-apps-newoptical-oar',
    '//apps/pathpainter:onos-apps-pathpainter-oar',
    '//apps/pcep-api:onos-apps-pcep-api-oar',
    '//apps/pim:onos-apps-pim-oar',
    '//apps/reactive-routing:onos-apps-reactive-routing-oar',
    '//apps/sdnip:onos-apps-sdnip-oar',
    '//apps/test/demo:onos-apps-test-demo-oar',
    '//apps/test/distributed-primitives:onos-apps-test-distributed-primitives-oar',
    '//apps/test/election:onos-apps-test-election-oar',
    '//apps/test/flow-perf:onos-apps-test-flow-perf-oar',
    '//apps/test/intent-perf:onos-apps-test-intent-perf-oar',
    '//apps/test/loadtest:onos-apps-test-loadtest-oar',
    '//apps/test/messaging-perf:onos-apps-test-messaging-perf-oar',
    '//apps/virtualbng:onos-apps-virtualbng-oar',
    '//apps/vpls:onos-apps-vpls-oar',
    '//apps/vrouter:onos-apps-vrouter-oar',
    '//apps/vtn:onos-apps-vtn-oar',
    '//apps/faultmanagement:onos-apps-faultmanagement-oar',
    '//apps/openstacknode:onos-apps-openstacknode-oar',
    '//apps/cpman/app:onos-apps-cpman-app-oar',
    '//apps/xosclient:onos-apps-xosclient-oar',
]

APP_JARS = [
    '//apps/cpman/api:onos-apps-cpman-api',
    '//apps/routing-api:onos-apps-routing-api',
    '//apps/dhcp/api:onos-apps-dhcp-api',
    '//apps/dhcp/app:onos-apps-dhcp-app',
    '//apps/fwd:onos-apps-fwd',
    '//apps/iptopology-api:onos-apps-iptopology-api',
    '//apps/openstacknode:onos-apps-openstacknode',
    '//apps/routing:onos-apps-routing',
    '//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc',
    '//apps/vtn/sfcmgr:onos-apps-vtn-sfcmgr',
    '//apps/vtn/vtnmgr:onos-apps-vtn-vtnmgr',
    '//apps/vtn/vtnweb:onos-apps-vtn-vtnweb',
]

java_library(
    name = 'core',
    visibility = ['PUBLIC'],
    deps = CORE,
)

java_library(
    name = 'apps',
    visibility = ['PUBLIC'],
    deps = APPS + APP_JARS,
)

java_library(
    name = 'onos',
    visibility = ['PUBLIC'],
    deps = [ ':core', ':apps' ]
)

INSTALL = [
    '//utils/misc:onlab-misc-install',
    '//utils/osgi:onlab-osgi-install',
    '//utils/rest:onlab-rest-install',

    '//core/api:onos-api-install',
    '//incubator/api:onos-incubator-api-install',

    '//core/net:onos-core-net-install',
    '//core/common:onos-core-common-install',
    '//core/store/dist:onos-core-dist-install',
    '//core/store/primitives:onos-core-primitives-install',
    '//core/store/persistence:onos-core-persistence-install',
    '//core/store/serializers:onos-core-serializers-install',

    '//incubator/net:onos-incubator-net-install',
    '//incubator/core:onos-incubator-core-install',
    '//incubator/store:onos-incubator-store-install',
    '//incubator/rpc:onos-incubator-rpc-install',

    '//core/security:onos-security-install',

    '//web/api:onos-rest-install',
    '//web/gui:onos-gui-install',
    '//cli:onos-cli-install',
]
java_library(
    name = 'install',
    visibility = ['PUBLIC'],
    deps = INSTALL
)
